package com.gigi.datageniebackendmaster.mq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 用于创建测试程序用到的交换机和队列（只用在程序启动前执行一次）
 */
public class MqInitMain {

    public static void main(String[] args) throws IOException, TimeoutException {
            // 创建交换机
            ConnectionFactory factory = new ConnectionFactory();
            // 设置 RabbitMQ 地址
            factory.setHost("localhost");
            // 创建连接
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
            // 声明交换机
            String EXCHANGE_NAME = "code_exchange";
            // 声明交换机类型为 direct
            channel.exchangeDeclare(EXCHANGE_NAME, "direct");
            // 创建队列
            String queueName = "code_queue";
            // 声明队列
            // durable 为 true 表示队列持久化，重启 RabbitMQ 后队列依然存在
            // exclusive 为 false 表示当前连接有效，连接断开时队列依然存在
            // autoDelete 为 false 表示自动删除，当队列没有绑定交换机时，队列自动删除
            // arguments 为 null 表示没有其他参数，可以在这里设置队列的其他属性
            channel.queueDeclare(queueName, true, false, false, null);
            // 绑定队列到交换机
            channel.queueBind(queueName, EXCHANGE_NAME, "my_routingKey");
    }// 创建通道

}
